import router from "@/router";
import { ElMessage } from "element-plus";
// 获取静态图片
export function getAssets(url: string) {
  return new URL(`../assets/img/${url}`, import.meta.url).href;
}

export const toPage = (path: string, query: Record<string, any> = {}) => {
  router.push({ path, query });
}

// 转换属性函数
export function transformAttributes(data: any, type: string, attributeMapping) {
  const mapping = attributeMapping[type];
  if (!mapping) return data;
  const result: Record<string, unknown> = {};
  for (const [label, key] of Object.entries(mapping)) {
    if (data[key as any] !== undefined && data[key as any] !== null) {
      result[label] = data[key as any];
    }
  }
  return result;
}

// 正确声明异步函数并修正语法
export async function jianKongUrl(deviceId) {
  try {
    // 第一步：调用启动接口
    const startRes = await fetch(
      `http://65.72.2.219:18080/api/play/start/43020100002000456987/${deviceId}`
    );

    // 验证第一步是否成功（根据实际接口返回调整）
    if (!startRes.ok) {
      throw new Error('启动播放失败');
    }
    const startData = await startRes.json();
    if(startData.code !== 0) {
      alert(`监控播放失败：${startData.msg}`)
      return
    }
    // // 第二步：打开播放页面
    // // const playWindow = window.open(
    // //   `http://65.72.2.219:18080/#/play/wasm/ws%3A%2F%2F65.72.2.219%3A8091%2Frtp%2F43020100002000456987_${deviceId}.live.flv`
    // // );
    return `http://65.72.2.219:18080/#/play/wasm/ws%3A%2F%2F65.72.2.219%3A8091%2Frtp%2F43020100002000456987_${deviceId}.live.flv`

  } catch (err) {
    // 修改后的错误处理部分
    console.error('监控流程失败:', err);
    ElMessage.error('监控流程失败');

  }
}

// 点位点击弹窗页面
export function getInnerHtml(title, list) {
  if (!title) {
    jianKongUrl(list[0].deviceId)
    return ''
  }

  let tableRows = '';

  for (const project of list) {
    let row = '<table style="width:280px;">';
    // 使用 for...in 循环遍历对象的属性
    for (const key in project) {
      row += `<tr><td style="width:60px">${key}:</td><td>${project[key]}</td></tr>`;
    }
    row += '</table> <div style="marginBottom:20px;marginTop:20px width:280px;height:1px;background-color:#ccc;"></div>';
    tableRows += row;
  }
  if (!title) {
    title = '监控点位'
    tableRows += `<button
  style="width:100px;height:50px;border-radius: 10px; background:skyblue;color:white;"
  onclick="handleJianKongUrl('${list[0].deviceId}')"
>按钮</button>`;
  }
  const html = `
          <div style="text-align:center;font-size:15px;">${title}</div>
          <div style="width:300px;height:300px;overflow-y:auto;">
          ${tableRows}</div>`
  return html
}

export function downloadHandle(res, params) {
  const contentDispositionName = getFileNameFromContentDisposition(res.headers['content-disposition'])
  const filename = (params && params.filename ? params.filename : res.headers.filename) || res.headers.fileName || contentDispositionName || '下载.docx'

  const content = res.data
  const blob = new Blob([content]) // 构造一个blob对象来处理数据
  // 对于<a>标签，只有 Firefox 和 Chrome（内核） 支持 download 属性
  // IE10以上支持blob但是依然不支持download
  if ('download' in document.createElement('a')) { // 支持a标签download的浏览器
    const link = document.createElement('a') // 创建a标签
    link.download = filename // a标签添加属性
    link.style.display = 'none'
    link.href = URL.createObjectURL(blob)
    document.body.appendChild(link)
    link.click() // 执行下载
    URL.revokeObjectURL(link.href) // 释放url
    document.body.removeChild(link) // 释放标签
  }
}

export function getFileNameFromContentDisposition(contentDisposition) {
  // 检查是否包含 filename*
  const filenameRegex = /filename\*=(?:UTF-8'')?([^;]+)/i;
  const match = contentDisposition.match(filenameRegex);

  if (match && match[1]) {
    // 如果 filename* 存在，进行解码
    return decodeURIComponent(match[1].replace(/['"]/g, ''));
  }

  // 检查是否包含 filename
  const fallbackFilenameRegex = /filename=([^;]+)/i;
  const fallbackMatch = contentDisposition.match(fallbackFilenameRegex);

  if (fallbackMatch && fallbackMatch[1]) {
    // 如果 filename 存在，返回结果
    return fallbackMatch[1].replace(/['"]/g, '');
  }

  return null; // 如果没有找到文件名
}

// 根据索引返回颜色
export function getColor(index) {
  const colors = [
    "#00EAFF", // 蓝色
    "#00A2FF", // 绿色
    "#EE6666", // 红色
    "#FAC858", // 黄色
    "#73C0DE", // 浅蓝色
    "#3BA272", // 深绿色
    "#FC8452", // 橙色
    "#9A60B4", // 紫色
    "#FF6B6B", // 亮红色
    "#000", // 黑色
    "#FAD3E7", // 粉红色
    "#A8E6CF", // 薄荷绿
    "#FFD3B6", // 浅橙色
    "#DCEDC1", // 浅绿色
    "#D4A5A5", // 淡紫色
    "#FFEEAD", // 浅黄色
    "#B5EAD7", // 浅薄荷绿
    "#FFB6C1", // 浅粉红色
    "#C6E2FF", // 浅天蓝色
    "#FFCC99", // 浅橙色
  ];

  return colors[index % colors.length];
}

